package com.galen.manual.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.galen.manual.entity.Admin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

/**
 * 管理员Mapper接口
 */
@Mapper
public interface AdminMapper extends BaseMapper<Admin> {

    /**
     * 根据用户ID查询管理员信息
     * @param userId 用户ID
     * @return 管理员信息
     */
    @Select("SELECT a.*, u.username, u.nickname, u.phone, u.avatar_url " +
            "FROM admins a " +
            "LEFT JOIN users u ON a.user_id = u.id " +
            "WHERE a.user_id = #{userId} AND a.deleted = 0")
    Admin selectByUserId(Long userId);

    /**
     * 查询管理员详细信息（包含用户信息）
     * @param adminId 管理员ID
     * @return 管理员信息（包含用户信息）
     */
    @Select("SELECT a.*, u.username, u.nickname, u.phone, u.avatar_url " +
            "FROM admins a " +
            "LEFT JOIN users u ON a.user_id = u.id " +
            "WHERE a.id = #{adminId} AND a.deleted = 0")
    Admin selectAdminWithUserInfo(Long adminId);

    /**
     * 更新管理员最后登录信息
     * @param adminId 管理员ID
     * @param loginTime 登录时间
     * @param loginIp 登录IP
     * @return 更新结果
     */
    @Update("UPDATE admins SET last_login_time = #{loginTime}, last_login_ip = #{loginIp} WHERE id = #{adminId}")
    int updateLastLoginInfo(Long adminId, String loginTime, String loginIp);
}